
import Vue from 'vue';
// import Vuex from 'vuex';
import Vuex from '../../lib/vuex/index';
Vue.use(Vuex);

import modules from './modules/index';
import actions from './actions/index';
import mutations from './mutations/index';

const state = { // 挂载到 data 上的属性
  age: 10
}

const getters = { // 类似计算属性
  myAge(state) {
    console.log('getters -> myAge');
    return state.age + 11;
  }
}

// vuex 的插件
const persitsPlugin = (store) => {
  // 保存到本地
  const persits = localStorage.getItem("VUEX_PERSITS");
  if (persits) {
    store.replaceState(JSON.parse(persits));
  }
  // 数据变化就会触发该函数
  store.subscribe((mutation, state) => {
    localStorage.setItem("VUEX_PERSITS", JSON.stringify(state));
  });
}

export default new Vuex.Store({
  plugins: [persitsPlugin], // 添加插件
  strict: true, // 严格模式,提醒用户严格按照规则办事
  modules, // 划分模块
  state, // 挂载到 data 上的属性
  getters, // 类似计算属性
  mutations, // 通过 $store.commit 触发该对象函数, 更改 state 的状态
  actions, // 通过 $store.dispatch 触发该对象函数
});